The major components of all processors or microprocessors are called the hardware. However, besides the hardware, a microprocessor has its instruction set or software, a particular set of logically related instructions stored in memory, being referred to as an application program or more generally a program. The microprocessor "reads" each instruction from memory in a logically predeterminate sequence, and uses it to initiate processing actions such as arithmetic, data transfer, branching, logic, and input/output (I/O). More accurately, when a processor "reads" a given instruction from the memory, it stores it into an instruction register in order to interpret it and carry it out. For that purpose, the control logic included into the processor first looks at the (macro)command portion of the instruction and interprets it or decodes it to determine what to do next. If the instruction is add, subtract, load, or output, the control logic first uses the address in the instruction register--the address associated with the command in the instruction word--and reads the word from that addressed location in memory; it then proceeds to load the word into the arithmetic unit, add it or subtract it from the number in the arithmetic unit, or transfer it to the output device, depending on the command. The addition of a "word" to the number in the arithmetic unit generally involves the storage of those operands in two registers associated with the Arithmetic Logic Unit (ALU): the accumulator and the temporary register. The accumulator is loaded from the internal bus and can transfer data to the internal bus. The temporary register stores one of the operands during a binary operation. For example, if the contents of register B are to be added to the contents of the accumulator, the temporary register holds a copy of the contents of register B while the arithmetic operation is taking place. It therefore appears that the decoding of a given (macro)command of an instruction by the control logic provides a set of elementary microcommands which, when carried out achieves the processing action corresponding to the considered macrocommand.
A problem has appeared in the fact that in some occasions, a processor erroneously interprets and decodes a given instruction, what entails an erroneous corresponding processing action. Error detecting and correcting devices exist in the data processing art. They provide the detection and correction of errors which have appeared in the data stored into a memory generally by means of a Frame Checking Sequence (FCS). However, if those devices are well appropriate to detect and correct an error which has been introduced into a given frame of data, they are unable to detect a wrong execution of a given command by a processor which has to interpret and decode it.
Therefore, a need has appeared for a device which provides the detection of an error in the decoding and the execution of a given instruction by a processor.